﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace BreukADO
{
    public partial class MaakOpdracht : Form
    {
        private int currentOpdrachtID;
        private DataTable opdrachtDetailDataTable;
        private BeheerOpdrachten vader;
        private int huidigeOpgave;

        public BeheerOpdrachten Vader
        {
            get { return vader; }
            set { vader = value; }
        }

        public int CurrentOpdrachtID
        {
            get { return currentOpdrachtID; }
            set { currentOpdrachtID = value; }
        }
        public MaakOpdracht()
        {
            InitializeComponent();
        }

        private void MaakOpdracht_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'breukADODataSet11.Opdracht' table. You can move, or remove it, as needed.
            this.opdrachtTableAdapter.Fill(this.breukADODataSet11.Opdracht);

            opdrachtDetailDataTable = opdrachtDetailTableAdapter.GetOpdrachtdetailsVoorSpecifiekeOpdracht(currentOpdrachtID);
            maximumLabel.Text = "/" + opdrachtDetailDataTable.Rows.Count.ToString(); //aantal opgaves tellen
            //MessageBox.Show(opdrachtDetailDataTable.Rows[huidigeOpgave]["opdrachtDetailID"].ToString());

            vulLeerlingen();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            //opgaveLabel.Text = "Opgave: "+opdrachtDetailDataTable.Rows[huidigeOpgave++]["OpgaveTekst"].ToString();
            opgaveLabel.Text = "Opgave: " + opdrachtDetailDataTable.Rows[huidigeOpgave]["OpgaveTekst"].ToString();
            timer1.Enabled = true;
            button2.Enabled = true;
        }

        /**
         * Combobox met leerlingen opvullen
         **/
        private void vulLeerlingen()
        {
            ArrayList col = new ArrayList();

           try
            {
                //DataTable dt = leerlingTableAdapter.GetLeerlingEnKlas();
                //DataTable dt = leerlingOpdrachtTableAdapter.GetOpdrachtmakersJoinLeerling(currentOpdrachtID);
                DataTable dt = leerlingOpdrachtTableAdapter.GetOpdrachtmakersLeerlingOpdrachtAlGemaakt(currentOpdrachtID);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    col.Add(new DictionaryEntry(dt.Rows[i]["LeerlingKlas"].ToString(), dt.Rows[i]["LeerlingID"].ToString()));
                }
            }
            catch (Exception) { };


            cmbLeerlingen.DisplayMember = "Key";
            cmbLeerlingen.ValueMember = "Value";
            cmbLeerlingen.DataSource = col;
            try
            {
                cmbLeerlingen.SelectedIndex = 0;
            }
            catch (Exception) { }
        }

        private void cmbLeerlingen_SelectedIndexChanged(object sender, EventArgs e)
        {
            int llID = Convert.ToInt32(cmbLeerlingen.SelectedValue.ToString());
            klasLabel.Text = leerlingTableAdapter.KlasPerId(llID);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (progressBar1.Value >= progressBar1.Maximum)
            {
                antwoordBox.Enabled = false;
                timer1.Stop();
            }
            progressBar1.PerformStep();
        }

        private void button2_Click(object sender, EventArgs e)
        {
           
                opgaveLabel.Text = "Druk op \"Toon Volgende Opdracht\" om de volgende opgave in de reeks te krijgen";
                timer1.Stop();
                antwoordBox.Enabled = true;
                button1.Enabled = true;
                progressBar1.Value = 0;
                button2.Enabled = false;

                // Opdracht evalueren
                Boolean fout = true;

                if (opdrachtDetailDataTable.Rows[huidigeOpgave]["OplossingTekst"].ToString().ToLower().ToString() == antwoordBox.Text.ToString().ToLower().ToString()){
                    fout = false;
                }
                
                leerlingOpdrachtDetailTableAdapter.InsertLeerlingOpdracht(antwoordBox.Text.ToString(),fout, Convert.ToInt32(cmbLeerlingen.SelectedValue.ToString()),Convert.ToInt32(opdrachtDetailDataTable.Rows[huidigeOpgave]["opdrachtDetailID"].ToString())); 

                huidigeOpgave++;
                vooruitgangLabel.Text = huidigeOpgave.ToString();
                antwoordBox.Text = "";
                if (huidigeOpgave >= opdrachtDetailDataTable.Rows.Count)
                {
                    button1.Enabled = false;
                    opgaveLabel.Text = "Alle opdrachten gemaakt";
                    MessageBox.Show("Alle opdrachten gemaakt voor deze student.", "Succes!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    
                    // Laatste leerling die deze opdracht moet maken; dus nu is ze klaar
                    if (cmbLeerlingen.Items.Count <= 1)
                    {
                        opdrachtTableAdapter.ZetStatus(true, currentOpdrachtID);
                        vader.RefreshDatagrid();
                    }
                    this.Close();
                }
    
        }



    }
}
